/* ==================================================================   
 * Created [2009-4-27 下午11:32:55] by Jon.King 
 * ==================================================================  
 * TSS 
 * ================================================================== 
 * mailTo:jinpujun@hotmail.com
 * Copyright (c) Jon.King, 2009-2012 
 * ================================================================== 
*/

package com.jinhe.tss.core.cachepool;


/** 
 * <p> Arithmetic.java </p> 
 * 
 * 缓存池算法。</p><p>
 * 本接口提供了扩充缓存池机制的功能。</p><p>
 * 通过实现本接口，用户可以各种定制各种特殊的缓存要求。</p><p>
 * 具体操作包括：缓存项创建、销毁以及合法性验证</p><p>
 * 
 * @author Jon.King 2006-12-29
 */
public interface IArithmetic {
    
    /**
     * 创建对象,将对象放入池中。</p><p>
     * 本方法在check-out方法调用时，池中没有可用对象的时候被调用用来生成新的对象。</p><p>
     * @exception 
     *           不能创建对象则抛出异常
     */
    Cacheable create(Long cyclelife);

    /**
     * 检测对象是否正常。</p><p>
     * 当对象被check-out的时候本方法被调用来判断检出对象是否可以使用。</p><p>
     * 实现类实现该方法用以确定check-out的对象不会存在问题影响使用。</p><p>
     * @param o
     * @return
     */
    boolean isValid(Cacheable o);
    
    /**
     * 销毁对象。</p><p>
     * 本方法会在池需要整理/清除，或者释放的时候被调用。
     * @param o
     */
    void destroy(Cacheable o);
}

